#include "UART.h"
#include <REGX52.H>
//unsigned char serial;//注意在main函数里声明为外部变量



#define T1MS_1200bps   0xE8;     /* (e8,-24,SMOD=0) @4800bps  pcon&=0x7f @11.0592MHz*/
#define T1MS_2400bps   0xF4;     /* (f4,-12,SMOD=0) @4800bps  pcon&=0x7f */
#define T1MS_4800bps   0xFA;     /* (fa, -6,SMOD=0) @4800bps  pcon&=0x7f */
#define T1MS_9600bps   0xFD;     /* (fd, -3,SMOD=0) @9600bps  pcon&=0x7f */
#define T1MS_19k2bps   0xfD;     /* (fd, -3,SMOD=1) @19.2kbps pcon|=0x80 */

/*********************************
函数名：sel_bps(select bps)
功能:设置串口波特率
sel为选择通讯速率：
  0=1200,1=2400,2=4800,3=9600,4=19.2k
*********************************
void sel_bps(unsigned char sel)
{
     switch(sel)
     {
        case 0:PCON&=0x7f;
               TH1=T1MS_1200bps;   /* T1 use sio *
               TL1=T1MS_1200bps;
               break;
        case 1:PCON&=0x7f;
               TH1=T1MS_2400bps;   /* T1 use sio *
               TL1=T1MS_2400bps;
               break;
        case 2:PCON&=0x7f;
               TH1=T1MS_4800bps;   /* T1 use sio *
               TL1=T1MS_4800bps;
               break;
        case 3:PCON&=0x7f;
               TH1=T1MS_9600bps;   /* T1 use sio *
               TL1=T1MS_9600bps;
               break;
        case 4:PCON|=0x80;
               TH1=T1MS_19k2bps;   /* T1 use sio *
               TL1=T1MS_19k2bps;
               break;
     }
}
*/

/*
 * 串口初始化
 *
void uart_config(){
	PS=1;
	TMOD=(0x0F&TMOD)|0x20; //T0 set Mode 1
	sel_bps(3); // 9600 bps
	TR1=1;      //启动定时器
	//设置工作方式
	SM0=0;
	SM1=1;
	REN=1; //允许串口接收
	EA=1;
	ES=1;
}



void UART_init(void)  //UART初始化
{
   unsigned char temp;
   SCON=0x50;//工作在方式1
   temp=PCON;
   PCON=temp&0x7F;//波特率不倍频
   temp=TMOD;
   TMOD=(temp&0x0F)|0x20; //定时器2工作在方式2
   TH1=0xFD; //波特率9600bps
   TH1=0xFD;
   TR1=1;//开定时器1 
	EA=1;
	ES=1;
}

/*************************************************************/

void WriteUART(unsigned char DATA)
{
	  SBUF=DATA;
	  while(!TI);//等待串口发生寄存器空
	  TI=0;	//标志位清零
}
/************************************************************/


/*
 * 串口发送数据
 *
void send_char(unsigned char datas){
  SBUF=datas;             // 发送数据
	while(!TI);
	TI=0;				      // 等待数据发送完毕
}

*/


 